﻿//#**********************************************************
//#関数名　：openApp()
//#機能　　：ウインドウオープン
//#引数　　：ＵＲＬ
//#　　　　：キー（値とセットでhiddenタグとして埋め込まれる）
//#　　　　：値（キーとセットでhiddenタグとして埋め込まれる）
//#戻り値　：なし
//#**********************************************************
function openApp(url, name){
	// カスタム関数対応
	if("function" == typeof cust_openApp)return cust_openApp(url,name);

	var screenWidth = screen.width;
	var screenHeight = screen.height;
	var screenWidth = 1024;	//業務共通 2007.05.08 SXGAでもXGAのwindowSizeに対応させた
	var screenHeight = 768;	//業務共通 2007.05.08 SXGAでもXGAのwindowSizeに対応させた
	var scroll = "";
	var windowOption = "";
	var W_Minus=10;	// ウィンドウのボーダー幅を除く
	var H_Minus=92;	// ＩＥタイトルバー、タスクバーを除く
	// ※上記はWindowsXPスタイル1024*768を基準とした。Win2000等では、タスクバーとの間に隙間ができる。
	// ※2006/03/06 SDAS) ステータスバー常設対応「H_Minus=92」

	// ウィンドウ大きさ計算
	if(screenWidth == 640){
		screenWidth		-= W_Minus;
		screenHeight	-= H_Minus;
		scroll = "yes";
	}else if(screenWidth == 800){
		screenWidth		-= W_Minus;
		screenHeight	-= H_Minus;
		scroll = "yes";
	}else{
		screenWidth		-= W_Minus;
		screenHeight	-= H_Minus;
		scroll = "no";
	}

	// ウィンドウオプション組み立て
	// 2006/03/06 SDAS) ステータスバー常設対応「status=yes」
	windowOption  = "toolbar=no,";
	windowOption += "location=no,";
	windowOption += "status=yes,";
	windowOption += "menubar=no,";
	windowOption += "scrollbars=" + scroll + ",";
	windowOption += "resizable=no,";
	windowOption += "width=" + screenWidth + ",";
	windowOption += "height=" + screenHeight + ",";
	windowOption += "top=0,";
	windowOption += "left=0'";

	//2006.01.30 CHG START HTML⇔js間クッキーのやり取りをランタイムから削除する
	//var targetName = getCookie(name);
	//if(targetName == ""){
	//	targetName = "_blank";
	//}
	var targetName = "_blank";
	//2006.01.30 CHG END
	
	//2006.03.06 SDAS) プロト支援ツールからの呼び出し(size1.js@openApp(url,name))に対応。
	//size1.js@openApp(url,name)は常にnameに"eztmp"指定するので、以外は"_blank"とする。
	if(name != undefined && name != "") targetName = name;

	// ウィンドウオープン
	if(url != "about:blank") {

		// 解像度を送信する
		// パラメータとして、scrrenWidth=1234&screeenHeight=1234&タイムスタンムをつけている。
		var screenWidth = screen.width;
		var screenHeight = screen.height;

		// 【NOTE】厳密には、この修正だけでは不十分である。
		// URL の形式は RFC 1738 で <scheme>:<scheme-specific-part>	と規定されており、
		// <scheme> が http の場合の形式は、 http://<host>:<port>/<path>?<searchpart>
		// と規定されている。
		// 基盤部品としては、（'?' の有無の外に）少なくとも下記の２点を検証することが
		// 望ましい。
		//	－ <scheme> が "http"（または "https"）であること。
		//	－ <host>:<port> の後ろに '/' が付加されていること。
		//		（<path> が指定されている場合も含む。）

		url += (url.indexOf('?') < 0 ? "?" : "&");
		url += "screenWidth=" + screenWidth;
		url += "&screenHeight=" + screenHeight;

		// URLの後ろにタイムスタンプを付加する
		date = new Date();
		url += "&";
		url += date.getHours();
		url += date.getMinutes();
		url += date.getSeconds();
		url += date.getMilliseconds();

	}

	win = window.open(url,targetName,windowOption);
	win.focus();
}


//#**********************************************************
//#関数名　：keyCheck()
//#機能　　：キーボードのキーをチェックする。BackSpaceなどを押せないようにする
//#引数　　：キーコード
//#戻り値　：true / false
//#**********************************************************
function keyCheck(code){

	// 112=F1 123=F12
	// 27=esc
	// 36=HOME 37=← 39=→
	// 9=TAB 66=B 68=D 69=E 72=H 73=I 76=L 78=N 79=O 82=R 83=S 87=W
	//2005.11.30  ショートカットキー（ALT）抑止が出来ていない不具合修正
	if((112 <= code && code <= 123)
		|| (code == 27)
		|| (event.ctrlKey && (code == 9  || code == 66 || code == 68 || code == 69 || code == 72 || code == 73 || code == 76 || code == 78 || code == 79 || code == 82 || code == 83 || code == 87)))
	{
		event.keyCode = 0;
		event.returnValue=false;
		return false;
	}else if(event.altKey && code == 36){
		alert("｢ホームに戻る｣ショートカットキーは無効です。");
		return false;
	}else if(event.altKey && (code == 37 || code == 39)){
		//alert("｢戻る・進む｣ショートカットキーは無効です。");
		return false;
	}
	//2005.11.30 add end

	//BackSpace対応
	//2005.03.07 ロジック整理
	var tagName=event.srcElement.tagName;
	var tagType=event.srcElement.type;
	//2005.04.13 入出力項目がreadOnlyである場合は、バックスペースを使用できないようにする。
	//→目的は不正な画面遷移の抑止である。
	var readOnlyFlg =event.srcElement.readOnly;
	// 8=BackSpace
	if(code == 8){
		if(readOnlyFlg==true){
			//readOnlyである。
			return false;
		}else{
			//readOnlyではない。
			if(!isPermissionTag(tagName,tagType)){
				//BackSpaceを許可するタグではない。
				return false;
			}
		}
	}

	invalidEntkey();

	return true;
}

//2005.03.07
//#**********************************************************
//#関数名　：isPermissionTag()
//#機能　　：BackSpaceを許可するタグであるか
//#引数　　：event.srcElement.tagName,event.srcElement.type
//#戻り値　：true / false
//#備考　　：「password」「file」をバックスペース許可するタグに追加
//#**********************************************************
function isPermissionTag(tagName,tagType){
	if((tagName == 'INPUT' &&  tagType=='text') 
	|| (tagName == 'INPUT' &&  tagType=='password')
	|| (tagName == 'INPUT' &&  tagType=='file')	
	||  tagName == 'TEXTAREA'){
		return true;
	}else{
		return false;
	}
}

//#**********************************************************
//#関数名　：invalidEntkey()
//#機能　　：Enterキーを無効にする
//#引数　　：なし
//#戻り値　：なし
//#**********************************************************
function invalidEntkey(){
	if(event.keyCode == 13){
		var myType = event.srcElement.type;
		if(myType != "button"){
			if(myType != "textarea"){
				if(myType != "image"){
					event.returnValue=false;
				}
			}
		}
	}
	return true;
}

//#**********************************************************
//#関数名　：isContainsLink()
//#機能　　：クリック対象タグがAタグまたは、Aタグを３階層までの親タグに持つかどうかの判断をする。
//#引数　　：なし
//#戻り値　：boolean
//#**********************************************************
function isContainsLink(){

	// 2006.05.17  event.srcElementがnullの時スクリプトエラーが起きる不具合修正
	// （グレーアウトさせたボタンのラベル上で右クリックした場合、要素名の取得ができない）
	if(event.srcElement.tagName == null){
		return false;
	}

// 2005.11.30 add start event.srcElementがBODY時にスクリプトエラーが起きる不具合修正
	if(event.srcElement.tagName == "BODY" ){
		return false;
	}
// 2005.11.30 add end
	if(event.srcElement.tagName=="A"
	  ||event.srcElement.parentElement.tagName =="A"  
	  ||event.srcElement.parentElement.parentElement.tagName=="A"
	  ||event.srcElement.parentElement.parentElement.parentElement.tagName=="A"	){
		return true;
	}else{
		return false;
	}
}



//字符数字可以输入
function keyCheckAlphaNumeric(code) {

    // 65=A ~ 90=Z
    // 97=a ~ 122=z
    // 48=0 ~ 57=9
    // 8=[Backspace] 46=[Delete] 9=[Tab]
    if (event.shiftKey && (48 <= code && code <= 57)) {
        event.keyCode = 0;
        event.returnValue = false;
        return false;
    }
    else if ((65 <= code && code <= 90)
		    || (97 <= code && code <= 122)
		    || (48 <= code && code <= 57)) {
        return true;
    }
    else if (code == 8 || code == 46 || code == 9) {
        return true;
    }
    else {
        event.keyCode = 0;
        event.returnValue = false;
        return false;
    }
}

//数字可以输入
function keyCheckNumeric(code) {

    // 48=0 ~ 57=9
    // 8=[Backspace] 46=[Delete] 9=[Tab]
    if (event.shiftKey && (48 <= code && code <= 57)) {
        event.keyCode = 0;
        event.returnValue = false;
        return false;
    }
    else if (48 <= code && code <= 57) {
        return true;
    }
    else if (code == 8 || code == 46 || code == 9) {
        return true;
    }
    else {
        event.keyCode = 0;
        event.returnValue = false;
        return false;
    }
}